
using System;
using Core.Base;
using Core.Contracts.Enums;
using Core.Contracts.Interfaces;
using Core.Features;
using Core.Resources;
using Core.Extensions;

namespace Core.Items.Robots
{
    /// <summary>
    /// Troiar robot class
    /// </summary>
    
    public sealed class Troiar : RobotBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="T:Core.Items.Robots.Troiar"/> class.
        /// </summary>
        public Troiar()
            : base(
            "Troiar",
            Traduction.desc_troiar,
            FactionsEnum.Pelistal,
            RobotTechnologyLevel.Mk1,
            RobotSizesEnum.Light,
            new ISlot[]{ 
				new Slot(0, SlotGroupsEnum.Chassis, SlotTypesEnum.Misc|SlotTypesEnum.Industrial, SizesEnum.Small),
				new Slot(1, SlotGroupsEnum.Chassis, SlotTypesEnum.Misc|SlotTypesEnum.Industrial, SizesEnum.Small),
				new Slot(2, SlotGroupsEnum.Chassis, SlotTypesEnum.Missile, SizesEnum.Small|SizesEnum.Medium),
				new Slot(3, SlotGroupsEnum.Chassis, SlotTypesEnum.Missile, SizesEnum.Small|SizesEnum.Medium),
				new Slot(4, SlotGroupsEnum.Chassis, SlotTypesEnum.Misc, SizesEnum.Small),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules), },
            new IFeature<object>[]{ 
				new AccumulatorCapacity<double>(425),
				new AccumulatorRechargeTime<double>(150),
				new CpuPerformance<double>(200),
				new ReactorPerformance<double>(175),
				new ArmorAmount<double>(600),
				new ChemicalResistance<double>(30),
				new KineticResistance<double>(10),
				new SeismicResistance<double>(45),
				new ThermalResistance<double>(150),
				new SurfaceHitSize<double>(2.75),
				new InterferenceEmission<double>(5.00),
				new InterferenceMinimum<double>(100.00),
				new InterferencePeak<double>(350.00),
				new InterferenceRadius<double>(100.00),
				new LockingRange<double>(325),
				new LockingTime<double>(12.50),
				new MaximumTargets<double>(4),
				new MissileGuidanceFailure<double>(0.1),
				new SensorStrength<double>(100),
				new SignalDetection<double>(70.00),
				new SignalMasking<double>(130.00),
				new ReloadingTime<double>(10),
				new CargoCapacity<double>(3.00),
				new RobotMass<double>(5450.00),
				new SlopeCapacity<double>(56),
				new TopSpeed<double>(68.40),
				new Volume<double>(10.00), },
            new IBonusModifier[]{
                new BonusModifier<BasicRobotics>( FeatureTypesEnum.Module, FeaturesEnum.EnergyNeutralizerOptimal, 0.05){ Unit = UnitsEnum.Percentage , DisplayName = "Energy neutralizer optimal"},
                new BonusModifier<BasicRobotics>( FeatureTypesEnum.Module, FeaturesEnum.EnergyDrainerOptimal, 0.05){ Unit = UnitsEnum.Percentage , DisplayName = "Energy drainers optimal"},
                new BonusModifier<BasicRobotics>( FeatureTypesEnum.Module, FeaturesEnum.EnergyNeutralizerNeutralizedEnergy, 0.05){ Unit = UnitsEnum.Percentage , DisplayName = "Neutralized energy amount"},
                new BonusModifier<BasicRobotics>( FeatureTypesEnum.Robot, FeaturesEnum.AccumulatorRechargeTime, -0.05){ Unit = UnitsEnum.Percentage , DisplayName = "Accumulator recharge time"},
            },
            new ICondition<IExtension>[]
                {
                    new ExtensionCondition<BasicRobotics>(3),
                    new ExtensionCondition<PelistalRobotControl>(3),
                    new ExtensionCondition<SpecOpsRobotControl>(1)
                })
        {
        }
    }
}